package org.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller//注册当前类的对象到容器中，且标识为控制器（做web的请求、响应处理）
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/login")
    //返回类型为String，返回视图的路径（转发）
    public String login(){
        /**
         * 返回视图：当前请求路径/user/login，返回路径为 login.html（相对路径写法）
         * 会以相对路径去找, 最终就是找 /user/login.html
         * 就找不到
         * login.html访问的路径应该是 http://localhost:8080/login.html
         */
//        return "login.html";//找不到
//        return "/login.html";//以/开始写，会从http到项目根路径 + 返回值 作为完整的路径
        return "forward:/login.html";//返回 "/login.html" 也是转发，写全就是带 forward: 一次请求，路径不变（当前这次http请求返回的响应体内容设置为转发的资源内容）
//        return "redirect:/login.html";//重定向到一个路径：两次请求：第一次返回301/302/307状态码+Location头，浏览器自动以location的值，设置为地址栏的url（第二次请求）
    }

    //提供post的方法
    @RequestMapping(value = "/test", method = RequestMethod.POST)
    /**
     * 返回值会设置为响应体:
     * (1) 返回类型为String：返回的字符串作为响应体的内容
     */
    @ResponseBody
    public String test(){
        return "/login.html";//这里就不是返回视图：因为有@ResponseBody
    }

    @RequestMapping("/test2")
    @ResponseBody
    public Object test2() throws InterruptedException {
        Thread.sleep(100);
        Map<String, Object> data = new HashMap<>();
        data.put("a", 1);
        data.put("b", true);
        data.put("c", "OK");
        return data;
    }
}
